#include "login.h"
#include "ui_login.h"
#include "dialog.h"

Login::Login(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Login)
{
    ui->setupUi(this);
    setWindowTitle("基于边缘网关的空调实验室测试监护系统");
    connect(ui->pushButtonLogin,SIGNAL(clicked()),
            this,SLOT(btnLoginSlot()));
    connect(ui->pushButtonRegister,SIGNAL(clicked()),
            this,SLOT(btnRegisterSlot()));
    // 连接到数据库
    connect2DB();
}

Login::~Login()
{
    delete ui;
}
//登录按钮槽函数
void Login::btnLoginSlot()
{
        QString id = ui->lineEditLogin->text();
        if (id == "")
        {
            QMessageBox::warning(this, "提示", "请输入昵称");
            return;
        }
        QString pwd = ui->lineEditPwd->text();
        if (pwd == "")
        {
            QMessageBox::warning(this, "提示", "请输入密码");
            return;
        }
        insertData();//登录

        // 先创建并显示Login界面
            Dialog *dialog = new Dialog(this);
            dialog->show();
            this->hide();
}
//注册按钮槽函数
void Login::btnRegisterSlot()
{
    QString id = ui->lineEditLogin->text();
        if (id == "")
        {
            QMessageBox::warning(this, "提示", "请输入昵称");
            return;
        }
        QString pwd = ui->lineEditPwd->text();
        if (pwd == "")
        {
            QMessageBox::warning(this, "提示", "请输入密码");
            return;
        }
}
// 连接到数据库
void Login::connect2DB()
{
    // 创建连接对象
    db = QSqlDatabase::addDatabase("QSQLITE");
    // 设置数据库文件名称
    db.setDatabaseName("login.db");
    // 打开数据库
    if(db.open())
    {
        qDebug() << "连接成功";
        createTable();
    }
    else
    {
        // 获得错误信息的封装类
        QSqlError info = db.lastError();
        // 提取错误信息
        QString text = info.text();
        // 展示错误
        QMessageBox::critical(this,"错误",text);
    }
}

// 建表
void Login::createTable()
{
    QString sql = "CREATE TABLE records(zhanghao TEXT,password TEXT);";
    // 创建数据库操作类对象
    QSqlQuery sq;
    // 如果执行成功
    if(sq.exec(sql))
    {
        qDebug() << "建表成功！";
    }
    else
    {
        // 获得错误信息的封装类
        QSqlError info = sq.lastError();
        // 提取错误信息
        QString text = info.text();
        // 展示错误
        qDebug() << "建表失败" << text ;
    }
}

void Login::insertData()
{
    QString zhanghao = ui->lineEditLogin->text();
        if(zhanghao == "")
        {
            QMessageBox::warning(this,"提示","请输入账号");
            return;
        }
        QString password = ui->lineEditPwd->text();
        if(password == "")
        {
            QMessageBox::warning(this,"提示","请输入密码");
            return;
        }

        // 预处理的SQL语句
        QString sql = "INSERT INTO records VALUES(?,?)";

        // 预处理
        QSqlQuery sq;
        sq.prepare(sql);

        // 绑定参数
        sq.addBindValue(zhanghao);
        sq.addBindValue(password);

        // 执行绑定后的SQL语句
        if(sq.exec())
        {
            QMessageBox::information(this,"通知","数据插入成功");
        }
        else // 失败
        {
           // 获取错误信息封装类
            QSqlError info = sq.lastError();
            QString text = info.text();
            QMessageBox::warning(this,"通知","数据插入失败");
            qDebug() << text;
        }
}


